数字滤波器的频率响应

您所在的位置:网站首页 matlab 将0至2π之间的 数字滤波器的频率响应

数字滤波器的频率响应

2023-12-16 04:47| 来源: 网络整理| 查看: 265

freqz

数字滤波器的频率响应

全页折叠 语法[h,w] = freqz(b,a,n)[h,w] = freqz(sos,n)[h,w] = freqz(d,n)[h,w] = freqz(___,n,'whole')[h,f] = freqz(___,n,fs)[h,f] = freqz(___,n,'whole',fs)h = freqz(___,w)h = freqz(___,f,fs)freqz(___)说明

示例

[h,w] = freqz(b,a,n) 返回数字滤波器的 n 点频率响应向量 h 和对应的角频率向量 w,滤波器的传递函数系数分别存储在 b 和 a 中。

示例

[h,w] = freqz(sos,n) 返回与二阶节矩阵 sos 对应的 n 点复频率响应。

示例

[h,w] = freqz(d,n) 返回数字滤波器 d 的 n 点复频率响应。

[h,w] = freqz(___,n,'whole') 返回整个单位圆周围 n 个采样点的频率响应。

[h,f] = freqz(___,n,fs) 返回数字滤波器的频率响应向量 h 和对应的物理频率向量 f,该数字滤波器经过设计,可以对以速率 fs 采样的信号进行滤波。

[h,f] = freqz(___,n,'whole',fs) 返回介于 0 与 fs 之间的 n 个点的频率向量。

h = freqz(___,w) 返回以 w 中提供的归一化频率计算的频率响应向量 h。

h = freqz(___,f,fs) 返回以 f 中提供的物理频率计算的频率响应向量 h。

示例

不带输出参数的 freqz(___) 用于绘制滤波器的频率响应。

示例

全部折叠

传递函数的频率响应打开实时脚本

计算并显示由以下传递函数描述的三阶 IIR 低通滤波器的幅值响应:

H(z)=0.05634(1+z-1)(1-1.0166z-1+z-2)(1-0.683z-1)(1-1.4461z-1+0.7957z-2).

将分子和分母表示为多项式卷积。求分布在整个单位圆上的 2001 个点上的频率响应。

b0 = 0.05634; b1 = [1 1]; b2 = [1 -1.0166 1]; a1 = [1 -0.683]; a2 = [1 -1.4461 0.7957]; b = b0*conv(b1,b2); a = conv(a1,a2); [h,w] = freqz(b,a,'whole',2001);

绘制以分贝表示的幅值响应。

plot(w/pi,20*log10(abs(h))) ax = gca; ax.YLim = [-100 20]; ax.XTick = 0:.5:2; xlabel('Normalized Frequency (\times\pi rad/sample)') ylabel('Magnitude (dB)')

二阶节的频率响应打开实时脚本

计算并显示由以下传递函数描述的三阶 IIR 低通滤波器的幅值响应:

H(z)=0.05634(1+z-1)(1-1.0166z-1+z-2)(1-0.683z-1)(1-1.4461z-1+0.7957z-2).

用二阶节表示传递函数。求分布在整个单位圆上的 2001 个点上的频率响应。

b0 = 0.05634; b1 = [1 1]; b2 = [1 -1.0166 1]; a1 = [1 -0.683]; a2 = [1 -1.4461 0.7957]; sos1 = [b0*[b1 0] [a1 0]]; sos2 = [b2 a2]; [h,w] = freqz([sos1;sos2],'whole',2001);

绘制以分贝表示的幅值响应。

plot(w/pi,20*log10(abs(h))) ax = gca; ax.YLim = [-100 20]; ax.XTick = 0:.5:2; xlabel('Normalized Frequency (\times\pi rad/sample)') ylabel('Magnitude (dB)')

FIR 滤波器的频率响应打开实时脚本

使用 β=8 的凯塞窗设计 80 阶 FIR 低通滤波器。指定归一化截止频率为 0.5π 弧度/采样点。显示滤波器的幅值和相位响应。

b = fir1(80,0.5,kaiser(81,8)); freqz(b,1)

使用 designfilt 设计相同的滤波器。显示其幅值和相位响应。

d = designfilt("lowpassfir",FilterOrder=80, ... CutoffFrequency=0.5,Window={"kaiser",8}); freqz(d)

FIR 带通滤波器的频率响应打开实时脚本

设计一个 FIR 带通滤波器,通带在 0.35π 和 0.8π 弧度/采样点之间,波纹为 3 dB。第一个阻带是从 0 到 0.1π 弧度/采样点,衰减为 40 dB。第二个阻带是从 0.9π 弧度/采样点到奈奎斯特频率,衰减为 30 dB。计算频率响应。同时以线性单位和分贝绘制其幅值。突出显示通带。

sf1 = 0.1; pf1 = 0.35; pf2 = 0.8; sf2 = 0.9; pb = linspace(pf1,pf2,1e3)*pi; bp = designfilt('bandpassfir', ... 'StopbandAttenuation1',40, 'StopbandFrequency1',sf1,... 'PassbandFrequency1',pf1,'PassbandRipple',3,'PassbandFrequency2',pf2, ... 'StopbandFrequency2',sf2,'StopbandAttenuation2',30); [h,w] = freqz(bp,1024); hpb = freqz(bp,pb); subplot(2,1,1) plot(w/pi,abs(h),pb/pi,abs(hpb),'.-') axis([0 1 -1 2]) legend('Response','Passband','Location','South') ylabel('Magnitude') subplot(2,1,2) plot(w/pi,db(h),pb/pi,db(hpb),'.-') axis([0 1 -60 10]) xlabel('Normalized Frequency (\times\pi rad/sample)') ylabel('Magnitude (dB)')

输入参数

全部折叠

b, a — 传递函数系数 向量

传递函数系数,指定为向量。用 b 和 a 将传递函数表示为

H(z)=B(z)A(z)=b1+b2z−1⋯+bnz−(n−1)+bn+1z−na1+a2z−1⋯+amz−(m−1)+am+1z−m

示例: b = [1 3 3 1]/6 和 a = [3 0 1 0]/3 用于指定归一化 3 dB 频率为 0.5π 弧度/采样点的三阶巴特沃斯滤波器。

数据类型: double | single 复数支持: 是

n — 计算点数 512 (默认) | 正整数标量

计算点数,指定为不小于 2 的正整数标量。当 n 不存在时,它默认为 512。为了获得最佳效果,请将 n 设置为大于滤波器阶数的值。

sos — 二阶节系数 矩阵

二阶节系数,指定为矩阵。sos 是 K×6 矩阵,其中节数 K 必须大于或等于 2。如果节数小于 2,该函数将输入视为分子向量。sos 的每行对应于二阶 (biquad) 滤波器的系数。sos 的第 i 行对应于 [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)]。

示例: s = [2 4 2 6 0 2;3 3 0 6 0 0] 用于指定归一化 3 dB 频率为 0.5π 弧度/采样点的三阶巴特沃斯滤波器。

数据类型: double | single 复数支持: 是

d — 数字滤波器 digitalFilter 对象

数字滤波器,指定为 digitalFilter 对象。使用 designfilt 根据频率响应设定生成数字滤波器。

示例: d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5) 用于指定归一化 3 dB 频率为 0.5π 弧度/采样点的三阶巴特沃斯滤波器。

fs — 采样率 正标量

采样率,指定为正标量。当时间单位为秒时,fs 以赫兹表示。

数据类型: double

w — 角频率 向量

角频率,指定为向量并以弧度/采样点表示。w 必须至少包含两个元素,否则该函数会将其解释为 n。w = π 对应于奈奎斯特频率。

f — 频率 向量

频率,指定为向量。f 必须至少包含两个元素,否则该函数会将其解释为 n。当时间单位为秒时,f 以赫兹表示。

数据类型: double

输出参数

全部折叠

h — 频率响应 向量

频率响应,以向量形式返回。如果指定 n,则 h 的长度为 n。如果未指定 n,或指定 n 为空向量,则 h 的长度为 512。

如果 freqz 的输入是单精度值,则该函数使用单精度算术运算计算频率响应。输出 h 是单精度值。

w — 角频率 向量

角频率,以向量形式返回。w 值的范围是从 0 到 π。如果在输入中指定 'whole',则 w 中的值的范围是从 0 到 2π。如果指定 n,则 w 的长度为 n。如果未指定 n,或指定 n 为空向量,则 w 的长度为 512。

f — 频率 向量

频率,以单位为赫兹的向量形式返回。f 的值的范围是从 0 到 fs/2 Hz。如果在输入中指定 'whole',则 f 中的值的范围是从 0 到 fs Hz。如果指定 n,则 f 的长度为 n。如果未指定 n,或指定 n 为空向量,则 f 的长度为 512。

算法

数字滤波器的频率响应可以解释为在 z = ejω [1] 处对传递函数进行求值。

freqz 根据您指定的(实数或复数)分子和分母多项式确定传递函数,并返回数字滤波器的复频率响应 H(ejω)。频率响应在您使用的语法所确定的采样点处计算。

freqz 通常使用 FFT 算法来计算频率响应,但前提是您不提供频率向量作为输入参数。它将频率响应计算为变换后的分子和分母系数之比,并用零填充至所需长度。

当您提供频率向量作为输入时,freqz 在每个频率点处计算多项式,并将分子响应除以分母响应。该函数使用霍纳方法计算多项式。

参考

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

扩展功能C/C++ 代码生成 使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

用法说明和限制:

如果 freqz 的第一个输入在编译时是可变大小矩阵,则它在运行时不能变为向量或空数组。

如果输入 n 在编译时大小可变,则它在运行时不能变为标量或空数组。

版本历史记录在 R2006a 之前推出

全部展开

R2023a: 使用创建绘图实时编辑器任务可视化函数输出

现在,您可以使用创建绘图实时编辑器任务以交互方式显示 freqz 的输出。您可以选择不同图类型并设置可选参数。该任务还会自动生成代码,这些代码成为您的实时脚本的一部分。

另请参阅

abs | angle | designfilt | digitalFilter | fft | filter | freqs | impz | invfreqs | logspace



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3